package com.bdqn.t330.ch09;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.mgt.DefaultSecurityManager;
import org.apache.shiro.realm.text.IniRealm;
import org.apache.shiro.subject.Subject;
import org.junit.Test;

public class ShiroTester {

    @Test
    public void testShiro() {
        //1、创建 Realm(安全数据源) 服务器修改
        //通过 shiro.ini 配置文件创建 Realm
        IniRealm realm = new IniRealm("classpath:shiro.ini");
        //2、配置 SecurityManager
        DefaultSecurityManager securityManager = new DefaultSecurityManager();
        //注入创建的 Realm(安全数据源)
        securityManager.setRealm(realm);
        SecurityUtils.setSecurityManager(securityManager);
        //3、操作 Subject，进行认证
        Subject subject = SecurityUtils.getSubject();
        //封装一个令牌
        UsernamePasswordToken token = new UsernamePasswordToken("admin", "1234561");
        try {
            subject.login(token);//登录，即认证
        } catch (AuthenticationException e) {
            System.out.println("认证异常：");
            e.printStackTrace();
        }
        System.out.println("是否认证通过：" + subject.isAuthenticated());
        System.out.println("身份信息：" + subject.getPrincipal());
    }
}
